package com.demo.java.OD351_400.OD383;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【最佳的出牌方法(B卷)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146240427
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 读取输入的扑克牌顺序
        String line = scanner.nextLine();
        scanner.close();

        // 初始化每个面值的牌的数量，大小为14，因为牌的面值从1到13，'0'和'J', 'K'的处理
        int[] cardCount = new int[14];

        // 遍历输入的每一张牌
        for (char card : line.toCharArray()) {
            if (card >= '1' && card <= '9') {
                // 数字牌1-9
                cardCount[card - '0']++;
            } else if (card == '0') {
                // '0'代表的是10
                cardCount[10]++;
            } else if (card >= 'J' && card <= 'K') {
                // 'J'和'K'的牌处理
                cardCount[card - '0' - 1]++;
            }
        }

        int score = 0;

        // 对于每种面值的牌，计算得分
        for (int i = 1; i <= 13; i++) {
            score += getScore(cardCount, i);
        }

        // 输出总得分
        System.out.println(score);
    }

    // 计算某个面值的牌的得分
    private static int getScore(int[] cardCount, int i) {
        int score = 0;

        // 根据牌的数量计算得分
        switch (cardCount[i]) {
            case 1:
                score += i;  // 1张牌，得分为面值
                break;
            case 2:
            case 3:
                score += i * cardCount[i] * 2;  // 2张或3张牌，得分为面值乘2
                break;
            case 4:
                score += i * cardCount[i] * 3;  // 4张牌，得分为面值乘3
                break;
        }

        return score;
    }
}